package com.platform.destiny.utils;

import cn.hutool.core.util.IdUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.TimeUnit;

/**
 * @Description 火山引擎文字转语音
 * @Author kaiyang
 * @Date 2024-01-30 9:50 AM
 */

@Slf4j
public class HuoUtils {

    // 火山引擎 语音技术
    public static final String appId = "5555";
    public static final String accessToken = "5555";
    public static final String secretKey = "55-555";


    /**
     * // 擎苍	BV701_streaming
     * //阳光青年	BV123_streaming
     * //反卷青年	BV120_streaming
     * //通用赘婿	BV119_streaming
     * //古风少御	BV115_streaming
     * //霸气青叔	BV107_streaming
     * //质朴青年	BV100_streaming
     * //温柔淑女	BV104_streaming
     * //开朗青年	BV004_streaming
     * //甜宠少御	BV113_streaming
     * //儒雅青年	BV102_streaming
     */
    public static JSONObject generate(String text, String voice) throws InterruptedException {

        HttpRequest post = HttpUtil.createPost("https://openspeech.bytedance.com/api/v1/tts_async_with_emotion/submit");
        post.header("content-type", "application/json");
        // 长文本合成	volc.tts_async.default
        // 长文本合成（带情感预测）	volc.tts_async.emotion
        post.header("Resource-Id", "volc.tts_async.emotion");
        post.header("Authorization", "Bearer; " + accessToken);

        JSONObject body = new JSONObject();
        body.put("appid", appId);
        body.put("reqid", IdUtil.fastSimpleUUID());
        body.put("voice_type", voice);
        body.put("text", text);
        body.put("format", "mp3");
        post.body(body.toJSONString());
        String response = post.execute().body();
        JSONObject json = JSONObject.parseObject(response);
        log.info(JSONObject.toJSONString(json, true));
        String taskId = json.getString("task_id");

        TimeUnit.SECONDS.sleep(5);

        String url = "https://openspeech.bytedance.com/api/v1/tts_async_with_emotion/query?";
        url += "appid=" + appId + "&task_id=" + taskId;
        HttpRequest get = HttpUtil.createGet(url);
        // get.header("content-type", "application/json");
        // 长文本合成	volc.tts_async.default
        // 长文本合成（带情感预测）	volc.tts_async.emotion
        get.header("Resource-Id", "volc.tts_async.emotion");
        get.header("Authorization", "Bearer; " + accessToken);

        HttpResponse execute = get.execute();
        JSONObject jsonObject = JSONObject.parseObject(execute.body());
        log.info(JSONObject.toJSONString(jsonObject, true));
        String res = jsonObject.getString("audio_url");
        log.info("url is {}", res);
        return jsonObject;

    }


    public static void main(String[] args) throws InterruptedException {


        // String response = post.execute().body();
        // JSONObject json = JSONObject.parseObject(response);
        // System.out.println(JSONObject.toJSONString(json, true));

        // b7fcaa0eebcd4fb58be0df95e1f0aeaf

        String taskId = "a40ae467b34a4e06be66e48c523ab288";

        String text = "同志们，想要过上和平幸福的生活，只有打胜仗，也许到了和平来临的时候，我们有许多人已经看不到那幸福的场景了" +
                "，但是祖国会记得我们，亲人会感激我们，是我们让敌人知道我们的祖国无比强大不容欺辱";

        String content = "当年先总理令革命军分三路会合徐州，兴师北上，光复徐州的第二天，清帝见大势已去，宣告退位。民国十六年四月，也正是在徐州城郊，我有幸亲率数十万健儿征讨北洋军阀孙传芳、张宗昌，大获全胜！";

        generate(content, "BV100_streaming");

        // System.out.println(url);


    }

}
